package com.xbongbong.saas.enums.dictionary;

import com.alibaba.fastjson.JSONObject;
import com.xbongbong.paas.constant.PaasConstant;
import com.xbongbong.i18n.util.I18nMessageUtil;
import lombok.Getter;

import java.util.ArrayList;
import java.util.List;
import java.util.Objects;

/**
 * 数据字典-产品单位
 *
 * @author haibin.zhang
 * @version v1.0
 * @date 2019/2/26 10:19
 * @since v1.0
 */
@Getter
public enum ProductUnitEnum {

    // 产品单位
    JIAN("1", "enum.productUnit.name.jian", "jian"),
    KG("2", "enum.productUnit.name.kg", "kg"),
    GE("3", "enum.productUnit.name.ge", "ge"),
    UNKNOWN("404", "unknown", "unknown"),
    ;

    private String code;
    private String name;
    private String attr;

    ProductUnitEnum(String code, String name, String attr) {
        this.code = code;
        this.name = name;
        this.attr = attr;
    }

    public static ProductUnitEnum getByCode(String code) {
        for(ProductUnitEnum cache : values()) {
            if(Objects.equals(code, cache.code)) {
                return cache;
            }
        }
        return null;
    }

    /**
     * 获取全部枚举
     */
    public static List<ProductUnitEnum> getAllEnum() {
        List<ProductUnitEnum> list = new ArrayList<>(PaasConstant.DEFAULT_INITIAL_CAPACITY);
        for (ProductUnitEnum cache : values()) {
            if (cache == UNKNOWN) {
                continue;
            }
            list.add(cache);
        }
        return list;
    }

    public static JSONObject getName(String code) {
        JSONObject jsonObject = new JSONObject();
        List<ProductUnitEnum> allEnum = getAllEnum();
        allEnum.forEach(item->{
            if (Objects.equals(Objects.toString(item.getCode()), code)) {
                String name = item.getName();
                jsonObject.put("value", code);
                jsonObject.put("text", name);
            }
        });
        return jsonObject;
    }

    public String getName() {
        return I18nMessageUtil.getMessage(name);
    }
}
